package main

import (
	"fmt"
	"time"
)

//当两个或对各操作必须按正确的顺序执行，当程序未保证这个顺序，就会发生竞争条件

func main()  {

	//data数据的访问循序不确定，即data++ 和 data==0,会产生多种输出结果
	var data int
	go func() {    //使用关键字go并发的运行一个函数，即goroutine
		data++
	}()
	if data==0 {
		fmt.Printf("the value is %v.\n",data)
	}





	//使用休眠来调整数据的竞争性问题，从表面上看，解决了竞争性问题，但实际及逻辑上，是没有解决该问题的
	var data1 int
	go func() { data++ } ()
	time.Sleep(1*time.Second)  //方式不优雅
	if data1==0 {
		fmt.Printf("the value is %v.\n",data)
	}


}

























































